package cn.doit.day03

import java.io.{FileOutputStream, ObjectOutputStream}
import scala.beans.BeanProperty

object _02_样例类 {
  def main(args: Array[String]): Unit = {
    //给我们重写了apply方法   天生就可以用在模式匹配上
    val xb1: Lion = Lion(1, "辛巴", 2)
    val xb2: Lion = Lion(1, "辛巴", 2)
    val i: Int = xb1.hashCode()
    val i1: Int = xb2.hashCode()
    println(i)
    println(i1)
    //equals 先比较两个对象得类型是否相同，在比较每一个属性是否相同 =》true
//    println(xb1.equals(xb2))//true   他给我们重写了equals这个方法
    /*val stream: ObjectOutputStream = new ObjectOutputStream(new FileOutputStream("d://a.txt"))
    stream.writeObject(xb1)*///底层给我们实现了序列化接口

    val xb3: Lion1 = new Lion1(1, "辛巴", 2)
    val xb4: Lion1 = new Lion1(1, "辛巴", 2)
//    println(xb3.equals(xb4))//false
/*    val stream1: ObjectOutputStream = new ObjectOutputStream(new FileOutputStream("d://b.txt"))
    stream1.writeObject(xb3)*/
    println(xb3.hashCode())
    println(xb4.hashCode())
  }
}


//样例类得属性，默认都是val修饰得，所以在定义属性得时候，可以不加val
case class Lion(
                 id:Int,
                 name:String,
                 age:Int)


class Lion1(val id:Int,val name:String,val age:Int)